package com.ysxm.util;

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

import org.springframework.web.multipart.MultipartFile;

/**
 * 文件操作工具类
 * @author Naive
 * @date: 2019年12月25日 上午10:51:40
 */
public class FileAccepterUtil {
	/**
	 * 文件上传
	 * @param file 上传的文件
	 * @param path 上传的路径
	 * @return 上传文件名
	 */
	public String FileUpload(MultipartFile file, String path) {
		String fileName  = file.getOriginalFilename();
        File dir = new File(path);//1.新建一个文件夹对象
        if(!dir.exists()){              //2.检查路径下upload文件夹是否存在
            dir.mkdirs();
        }

        if (fileName.toLowerCase().endsWith(".jpg") || fileName.toLowerCase().endsWith(".png")) {
            //新名字：
            String newName = new SimpleDateFormat("yyyyMMddhhmmss").format(new Date()) +"."+ fileName.substring(fileName.lastIndexOf(".")+1);
            try {
				file.transferTo(new File(path + newName));
				return newName;
			} catch (IllegalStateException | IOException e) {
				e.printStackTrace();
				return null;
			}
        }  if (fileName.toLowerCase().endsWith(".mp4") || fileName.toLowerCase().endsWith(".avi")) {
            //新名字：
            String newName = new SimpleDateFormat("yyyyMMddhhmmss").format(new Date()) +"."+ fileName.substring(fileName.lastIndexOf(".")+1);
            try {
				file.transferTo(new File(path + newName));
				return newName;
			} catch (IllegalStateException | IOException e) {
				e.printStackTrace();
				return null;
			}
        }
		return null;
	}
	
	/**
	 * 	多文件上传
	 * @param files
	 * @param path
	 * @return
	 */
	@SuppressWarnings("unused")
	public static Map<String ,String> FileUpload(MultipartFile[] files, String path) {
		Map<String ,String> map = new HashMap<String ,String>();
		File dir = new File(path);//1.新建一个文件夹对象
		if(!dir.exists()){              //2.检查路径下upload文件夹是否存在
            dir.mkdirs();
        }
		for (int i = 0; i < files.length; i++) {
			String fileName  = files[i].getOriginalFilename();
			
	            //新名字：
	            //String newName = new SimpleDateFormat("yyyyMMddhhmmss").format(new Date()) +"."+ fileName.substring(fileName.lastIndexOf(".")+1);
			if (fileName.toLowerCase().endsWith(".mp4") || fileName.toLowerCase().endsWith(".avi")){
				try {
					files[i].transferTo(new File(path + fileName));
					map.put("moviesaddress",fileName);
				} catch (IllegalStateException | IOException e) {
					e.printStackTrace();
					return null;
				}
			}
			if (fileName.toLowerCase().endsWith(".jpg") || fileName.toLowerCase().endsWith(".png")) {
				try {
					files[i].transferTo(new File(path + fileName));
					map.put("moivecover",fileName);
				} catch (IllegalStateException | IOException e) {
					e.printStackTrace();
					return null;
				}
			}
			
		}
		return map;
	}
	
	/**
	 * 文件删除
	 * @param path 文件的路径
	 * @param fileName 文件名
	 * @return
	 */
	public boolean FileDelete(String path, String fileName) {
		File file = new File(path+"/"+fileName);
		return file.delete();
	}
	/**
	 * 	文件复制
	 * @param oldPath:源文件路径
	 * @param newPath:新文件路径
	 * @param fileName:文件名
	 * @return:
	**/
	public Boolean FileCopy(String oldPath ,String newPath ,String fileName){
		File newDir = new File(newPath);
		if (!newDir.exists()){
			newDir.mkdirs();
		}
		try {
			Files.copy(new File(oldPath+fileName).toPath() ,new File(newPath+fileName).toPath());
			return true;
		}catch (Exception e){
			e.printStackTrace();
			return false;
		}
	}
}
